Network functions virtualization (NFV) is a network architecture concept that implements specific functions or entire classes of network device functions as building blocks that may be connected, or chained, together to create communication services. These functions are implemented in a virtualized software environment that enables their distribution to and execution on commodity hardware deployed within a network.
NFV relies upon, but differs from, traditional server virtualization techniques such as those used in enterprise level software. A virtualized network function, or VNF, may be implemented via one or more virtual machines running different software and processes, on top of standard network device or server architectures, such as switches and storage systems, or even in a cloud computing infrastructure, instead of having custom hardware appliances for each network function.
A VNF may be implemented to perform packet processing and forwarding of Layer 2, Layer 2.5 or Layer 3 traffic and may be referred to as a Forwarding VNF. Packets received at a network element implementing a forwarding VNF are distributed to packet processing threads performing the forwarding task. The packet processing threads may use a run-to-completion model, where each thread runs an instance of a forwarding software (e.g., Ingress/Egress or Collapsed Ingress/Egress functionality). Various approaches may be used to distribute packets to the packet processing threads.